#include <iostream>
using std::cout;
using std::endl;

//extern用于外部声明
//外部声明的变量/函数不能重复定义
/* extern int number = 200; */
/* number = 200;//error */
/* extern void print(){ */
/*     cout << "externB print()" << endl; */
/* } */

extern int number;
extern void print();

//命名空间中的实体跨模块调用方式
//再定义一次同名的命名空间，在命名空间中用extern做外部声明
namespace wd
{
extern int number;
extern void print();
}

//静态的变量和函数不能跨模块调用
/* static extern int number2; */


namespace
{
extern int number3;
extern void print3();
}

void test0(){
    cout << number << endl;
    print();

    cout << wd::number << endl;
    wd::print();

    cout << ::number3 << endl;
    ::print3();
}

int main(void){
    test0();
    return 0;
}
